home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_13_10 / phillip2 / warp.c < prev   
C/C++ Source or Header  |  1994-03-02  |  4KB  |  157 lines

  1.  
  2.  
  3.     /********************************************
  4.     *
  5.     *    file c:\cips\warp.c
  6.     *
  7.     *    Functions: This file contains
  8.     *       main
  9.     *
  10.     *    Purpose:
  11.     *       This file contains the main calling
  12.     *       routine for warping subroutines.
  13.     *
  14.     *    External Calls:
  15.     *       gin.c - get_image_name
  16.     *       tiff.c - read_tiff_header
  17.     *       warpsubs.c - warp
  18.     *                    object_warp
  19.     *
  20.     *    Modifications:
  21.     *       26 October 1993 - created
  22.     *
  23.     ********************************************/
  24.  
  25. #include "cips.h"
  26.  
  27.  
  28. short the_image[ROWS][COLS];
  29. short out_image[ROWS][COLS];
  30.  
  31. main(argc, argv)
  32.    int argc;
  33.    char *argv[];
  34. {
  35.  
  36.    char   name[80], name2[80], type[80];
  37.    float  theta, x_stretch, y_stretch,
  38.           x_cross, y_cross;
  39.    int    bilinear, count, i, ie, il, j, le,
  40.           length, ll, width,
  41.           x1, x2, x3, x4, y1, y2, y3, y4;
  42.    int    x_control, y_control;
  43.    short  m, n, x_displace, y_displace;
  44.    struct tiff_header_struct image_header;
  45.  
  46.    my_clear_text_screen();
  47.  
  48.  
  49.       /*************************************
  50.       *
  51.       *   This program will use a different
  52.       *   command line for each type of
  53.       *   call.
  54.       *
  55.       *   Print a usage statement that
  56.       *   gives an example of each type
  57.       *   of call.
  58.       *
  59.       *************************************/
  60.  
  61.    if(argc < 7){
  62.     printf("\n\nNot enough parameters:");
  63.     printf("\n");
  64.     printf("\n   Two Operations: ");
  65.     printf("\n      warp      object-warp");
  66.     printf("\n\n   Examples:");
  67.     printf("\n");
  68.     printf("\n   warp in out warp x-control ");
  69.     printf("y-control il ie bilinear (1 or 0)");
  70.     printf("\n");
  71.     printf("\n   warp in out object-warp x1 y1");
  72.     printf(" x2 y2 x3 y3 x4 y4 il ie ");
  73.     printf("bilinear (1 or 0)");
  74.     printf("\n");
  75.     exit(0);
  76.    }
  77.  
  78.       /*************************************
  79.       *
  80.       *   Interpret the command line
  81.       *   depending on the type of call.
  82.       *
  83.       *************************************/
  84.  
  85.    if(strncmp(argv[3], "warp", 3) == 0){
  86.       strcpy(name,  argv[1]);
  87.       strcpy(name2, argv[2]);
  88.       strcpy(type,  argv[3]);
  89.       x_control = atoi(argv[4]);
  90.       y_control = atoi(argv[5]);
  91.       il        = atoi(argv[6]);
  92.       ie        = atoi(argv[7]);
  93.       bilinear  = atoi(argv[8]);
  94.    }
  95.  
  96.    if(strncmp(argv[3], "object-warp", 3) == 0){
  97.       strcpy(name,  argv[1]);
  98.       strcpy(name2, argv[2]);
  99.       strcpy(type,  argv[3]);
  100.       x1        = atoi(argv[4]);
  101.       y1        = atoi(argv[5]);
  102.       x2        = atoi(argv[6]);
  103.       y2        = atoi(argv[7]);
  104.       x3        = atoi(argv[8]);
  105.       y3        = atoi(argv[9]);
  106.       x4        = atoi(argv[10]);
  107.       y4        = atoi(argv[11]);
  108.       il        = atoi(argv[12]);
  109.       ie        = atoi(argv[13]);
  110.       bilinear  = atoi(argv[14]);
  111.    }
  112.  
  113.    il = 1;
  114.    ie = 1;
  115.    ll = ROWS+1;
  116.    le = COLS+1;
  117.  
  118.    read_tiff_header(name, &image_header);
  119.  
  120.    length = (ROWS-10 + image_header.image_length)/ROWS;
  121.    width  = (COLS-10 +image_header.image_width)/COLS;
  122.    count  = 1;
  123.    printf("\nlength=%d  width=%d", length, width);
  124.  
  125.       /*************************************
  126.       *
  127.       *   Call the routines
  128.       *
  129.       *************************************/
  130.  
  131.    if(strncmp(type, "warp", 3) == 0){
  132.       il = atoi(argv[6]);
  133.       ll = il+ROWS;
  134.       ie = atoi(argv[7]);
  135.       le = ie+COLS;
  136.       warp(name, name2, the_image, out_image,
  137.            il, ie, ll, le,
  138.            x_control, y_control,
  139.            bilinear);
  140.    }  /* ends if */
  141.  
  142.  
  143.  
  144.    if(strncmp(argv[3], "object-warp", 3) == 0){
  145.       il = atoi(argv[12]);
  146.       ll = il+ROWS;
  147.       ie = atoi(argv[13]);
  148.       le = ie+COLS;
  149.       object_warp(name, name2, the_image, out_image,
  150.                   il, ie, ll, le, 
  151.                   x1, y1, x2, y2, 
  152.                   x3, y3, x4, y4,
  153.                   bilinear);
  154.     }   /* ends if */
  155.  
  156. }  /* ends main  */
  157.